Amazon VPC IPアドレス設計レシピ
はじめに
AWSにはEC2やRDS、RedshiftなどVPCに対応したサービスが数多くあります。 これらのサービスを利用する場合、まずはVPCやサブネットを作成します。 VPCの作成ではIPアドレス(=CIDR)に何を指定するか迷う方が多いのではないでしょうか。 私がVPCとサブネットのCIDRを決める際に考慮しているポイントは、ざっと以下の通りです。
- プライベートIPアドレス範囲から指定する
- VPNやDirect Connect利用時はオンプレミスとの重複に注意する
- VPCピア利用時はVPC間で重複できない
- 将来の拡張に対応可能なCIDRを選択する
- 最低でも/28以上が必要
- CIDRブロックのうち、5IPは利用できない
- ELBを配置するサブネットは/27以上のCIDRかつ、少なくとも8個の空きIPを用意する
それぞれの詳細をご紹介し、最後に優先順位をまとめます。
プライベートIPアドレス範囲から指定する
CIDRは以下のプライベートIPアドレスの範囲から指定します。 プライベートIPアドレスから外れるCIDRブロックも利用できますが、プライベートIPアドレスの利用が推奨されます。
- 10.0.0.0 - 10.255.255.255 (10.0.0.0/8)
- 172.16.0.0 - 172.31.255.255 (172.16.0.0/12)
- 192.168.0.0 - 192.168.255.255 (192.168.0.0/16)
VPNやDirect Connect利用時はオンプレミスとの重複に注意する
オンプレミスで稼働している基幹システムを利用するために、インターネットVPNやDirectConnectを利用するケースがあります。 社内NWやデータセンターに設置されたDBサーバーのデータをAWSで利用するようなケースです。
VPNを利用する事で通信は暗号化されます。 DirectConnectでは閉域網で安全にデータをやり取りできます。また、インターネットVPNと比較すると安定して利用出来る傾向があります。 VPNやDirectConnectを利用すると、AWSはオンプレミスの延長として利用出来ます。通信はプライベートIPアドレスで行われます。
VPNやDirectConnectを利用する場合、サブネットとオンプレミスでCIDRの重複は許されません。 オンプレミスのNW管理者に相談し必要なサブネットの数やIP数から、CIDRを決定します。 ルーターのNATで対応する事も可能ですが、管理が面倒になるので重複しないようにします。
VPCピア利用時はVPC間で重複できない
VPCピア接続を行うと、VPC間でプライベートIPアドレスによる通信が出来ます。 CIDRブロックが一致または重複するVPC間では、VPCピア接続を作成出来ません。
VPCピア接続が見込まれる場合は、ピア接続を行うVPCのCIDRを確認しましょう。 将来のピア接続を見込んでVPCのCIDRは重複しないようにするとベターです。
将来の拡張に対応可能なCIDRを選択する
前述のVPN、DirectConnectの利用が見込まれない場合、CIDRの節約を意識しすぎる事は辞めましょう。 VPCは論理的に分離しているため、CIDRの節約を強く意識する必要はありません。
CIDRの節約を意識するあまり、IPアドレスが不足した場合はVPCの再作成とインスタンスの移行が必要になります。 EC2の場合はAMIを取得しインスタンスを再作成します。 アプリケーションの設定変更やサービス断が発生する可能性があります。またセキュリティグループの移行も必要です。 EC2を追加したいのにIPアドレスが足りないといった事態は避けたいですよね。 後述の利用可能なIP数を参照し、将来の拡張に対応可能なCIDRを選択します。 利用するIP数(=インスタンス数)にもよりますが、/24-/26程度のサブネットであれば安心出来ると思います。
最低でも/28以上が必要
VPCとサブネットのCIDRは、/16から/28の範囲で指定します。 最低でも/28以上が必要です。
CIDRブロックのうち、5IPは利用できない
サブネットのCIDRブロックのうち、5つは利用出来ません。 ネットワークアドレス、ブロードキャストアドレス、AWSの予約(ルーター、DNSサーバ、将来の利用)に使われます。 /28の場合ホスト部は4ビットですから、2の4乗-5=11ipを利用できます。 CIDRごとに利用可能はIP数をまとめます。
- /28 11ip
- /27 27ip
- /26 59ip
- /25 123ip
- /24 251ip
- /23 507ip
- /22 1019ip
- /21 2043ip
- /20 4091ip
- /19 8187ip
- /18 16379ip
- /17 32763ip
- /16 65531ip
ELBを配置するサブネットは/27以上のCIDRかつ、少なくとも8個の空きIPを用意する
ELBは負荷に応じて、自動的にスケールアウトします。 スケールアウト時に空きIPアドレスを使用するため、余裕をもたせます。 CIDRは/27以上かつ、少なくとも8個の空きIPを用意する事が推奨されます。 CIDRを小さくとった場合、IPアドレスが枯渇しスケールアウト出来ない可能性があります。 /24程度とっておくと、目安の/27に対して十分に大きいですから安心出来ると思います。
CIDR決定の優先順位
理想的なCIDRブロックを考えます。 EC2の追加やELBのスケールアウトに対応できるIP数を利用でき、オンプレミスや既存のVPC、将来作成するVPCと重複しないブロックが理想だと考えます。 これら全ての条件を満たす事は難しい事が多いので、優先順位を考えます。
VPNやDirectConnectを利用する場合は、オンプレミスとの重複防止を第一に考えます。 NW管理者と相談してCIDRを決定しましょう。 全社的にプライベートIPアドレスの重複が無いように管理しているケースが多いので、拡張を意識しつつ最小限のブロックを使うケースが多いです。
VPNやDirectConnectの利用が見込まれない場合、小さくとる事は避けましょう。 VPCは論理的に分離していますし、将来的なEC2の追加やELBのスケールアウトに対応出来ないケースがあるためです。 将来のピア接続を見込んでVPCのCIDRは重複しないようにするとベターでしょう。
おわりに
オンプレミスのNW設計ではCIDR設計を特に慎重に行う必要があります。 私がオンプレミスのNW設計に携わっていた頃は、CIDRは限られたリソースといった認識でした。
AWSでもCIDR設計は気をつけて行う必要がありますが、オンプレミスとは考え方が異なります。 VPCの作り直しが無いように、しっかりとした設計をしていきたいです。